﻿' BasecampVB - http://www.tidbitsandtangents.com
' Copyright (c) 2009
' by Rusty S. Swayne
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
' documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
' to permit persons to whom the Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial portions 
' of the Software.
'
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
' INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
' SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
' WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Imports System.Configuration

Namespace Configuration

    Public Class BasecampVBSection
        Inherits ConfigurationSection

        ''' <summary>
        ''' Url of your Basecamp site eg. http://yoursite.basecamphq.com
        ''' </summary>
        <ConfigurationProperty("basecampUrl", IsRequired:=True)> _
        Public Property BasecampUrl() As String
            Get
                Return Me("basecampUrl").ToString()
            End Get
            Set(ByVal value As String)
                If Not value.EndsWith("/") Then value &= "/"
                Me("basecampUrl") = value
            End Set
        End Property

        ''' <summary>
        ''' Basecamp users username for API authentication
        ''' </summary>
        <ConfigurationProperty("username", IsRequired:=True)> _
        Public Property Username() As String
            Get
                Return Me("username").ToString()
            End Get
            Set(ByVal value As String)
                Me("username") = value
            End Set
        End Property


        ''' <summary>
        ''' Basecamp users password for API authentication
        ''' </summary>
        <ConfigurationProperty("password", IsRequired:=True)> _
        Public Property Password() As String
            Get
                Return Me("password").ToString()
            End Get
            Set(ByVal value As String)
                Me("password") = value
            End Set
        End Property


        ''' <summary>
        ''' Toggle to enable or disable caching
        ''' </summary>
        ''' <remarks>
        ''' Not currently used in this library
        ''' </remarks>
        <ConfigurationProperty("enableCaching", DefaultValue:="true")> _
        Public Property EnableCaching() As Boolean
            Get
                Return CType(Me("enableCaching"), Boolean)
            End Get
            Set(ByVal value As Boolean)
                Me("enableCaching") = value
            End Set
        End Property

        ''' <summary>
        ''' Sets the duration for which results are to be cached
        ''' </summary>
        ''' <remarks>
        ''' Not currently used in this library
        ''' </remarks>
        <ConfigurationProperty("cacheDuration")> _
        Public Property CacheDuration() As Integer
            Get
                Return CType(Me("cacheDuration"), Integer)                
            End Get
            Set(ByVal value As Integer)
                Me("cacheDuration") = value
            End Set
        End Property


    End Class


End Namespace